
package cn.org.chiss.rhin._2015.base.object;

import cn.org.chiss.rhin._2015.base.Boolean;
import cn.org.chiss.rhin._2015.base.Integer;
import cn.org.chiss.rhin._2015.base.String;
import cn.org.chiss.rhin._2015.base.*;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.xml.bind.annotation.*;
import java.util.List;


/**
 * <p>Extension complex type的 Java 类。
 *
 * <p>以下模式片段指定包含在此类中的预期内容。
 *
 * <pre>
 * &lt;complexType name="Extension"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="name" type="{http://www.chiss.org.cn/rhin/2015}URI"/&gt;
 *         &lt;element name="value" type="{http://www.chiss.org.cn/rhin/2015}Any" maxOccurs="unbounded"/&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Extension", propOrder = {
        "name",
        "value"
})
@Data
@Accessors(chain = true)
public class Extension {

    @XmlElement(required = true)
    protected URI name;
    @XmlElements({
            @XmlElement( name = "value", type = String.class),
            @XmlElement( name = "boolean", type = Boolean.class),
            @XmlElement( name = "date", type = Date.class),
            @XmlElement( name = "time", type = Time.class),
            @XmlElement( name = "dateTime", type = DateTime.class),
            @XmlElement( name = "duration", type = Duration.class),
            @XmlElement( name = "language", type = Language.class),
            @XmlElement( name = "code", type = Code.class),
            @XmlElement( name = "unsignedInt", type = UnsignedInt.class),
            @XmlElement( name = "integer", type = Integer.class),
            @XmlElement( name = "decimal", type = Decimal.class),
            @XmlElement( name = "ncName", type = NCName.class),
            @XmlElement( name = "qname", type = QName.class),
            @XmlElement( name = "base64Binary", type = Base64Binary.class),
            @XmlElement( name = "uri", type = URI.class),
            @XmlElement( name = "urn", type = URN.class),
            @XmlElement( name = "id", type = ID.class),
            @XmlElement( name = "oid", type = OID.class),
            @XmlElement( name = "uuid", type = UUID.class),
            @XmlElement( name = "instant", type = Instant.class),
            @XmlElement( name = "identifier", type = Identifier.class),
            @XmlElement( name = "period", type = Period.class),
            @XmlElement( name = "reference", type = Reference.class),
            @XmlElement( name = "coding", type = Coding.class),
            @XmlElement( name = "codeableConcept", type = CodeableConcept.class),
            @XmlElement( name = "quantity", type = Quantity.class),
            @XmlElement( name = "nameUse", type = NameUse.class),
            @XmlElement( name = "humanName", type = HumanName.class),
            @XmlElement( name = "addressUse", type = AddressUse.class),
            @XmlElement( name = "addressType", type = AddressType.class),
            @XmlElement( name = "address", type = Address.class),
            @XmlElement( name = "backboneElement", type = BackboneElement.class),
            @XmlElement( name = "telecomMode", type = TelecomMode.class)
    })
    protected List<Any> value;

}
